package xpn.platform.modules.workflow.definition.process;

import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.Length;
import xpn.platform.common.persistence.AbstractBaseEntity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

/**
 * 流程：代表一组流程实例的类别抽象。一个流程实例至少包括一个状态。
 */

@Entity
@Table(name = "wf_process")
@Getter
@Setter
public class Process extends AbstractBaseEntity {
    /**
     * @author bobatkm
     * @version 2017年8月29日 上午1:57:41
     */
    private static final long serialVersionUID = -8205101000937929930L;

    @Column(unique = true, nullable = false)
    @Length(min = 2, max = 40)
    private String name; // 流程名称

    @Column(length = 20, unique = true, nullable = false)
    @Length(min = 2, max = 20)
    private String no; // 编号

    private Float sortNo; // 排序号

    @Column(length = 100)
    @Length(max = 100)
    private String startAuthorizationRule; // 启动流程授权规则：规定谁可以启动流程

    private Long initStateId; // 流程启动后的初始状态

    @Column(unique = false, nullable = true)
    @Length(max = 60)
    private String description; // 流程说明

    /**
     * 扩展 JSON 配置，目前用于配置：待办标题生成规则、待办分类、待办紧急程度
     */
    private String extendJson;

    /**
     * 流程定义对应的实体名
     */
    private String entityName;

    /**
     * 流程对应的待办分类编码
     */
    private String categoryCode;
}
